package com.tangchao.view;

import android.content.Context;
import android.graphics.Canvas;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.TextView;

/**
 * 竖排TextView(文字横排)
 * 
 * @author TangChao
 *
 */
public class VerticalViewCharacterHorizontal extends TextView
{
	final boolean orientation;
	
	public VerticalViewCharacterHorizontal(Context context, AttributeSet attrs)
	{
		super(context, attrs);
		final int gravity = getGravity();
		if (Gravity.isVertical(gravity) && (gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM)
		{
			setGravity((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP);
			orientation = false;
		}
		else
		{
			orientation = true;
		}
	}
	
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
	{
		super.onMeasure(heightMeasureSpec, widthMeasureSpec);
		setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
	}
	
	@Override
	protected void onDraw(Canvas canvas)
	{
		TextPaint textPaint = getPaint();
		textPaint.setColor(getCurrentTextColor());
		textPaint.drawableState = getDrawableState();
		canvas.save();
		if (orientation)
		{
			canvas.translate(getWidth(), 0);
			canvas.rotate(90);
		}
		else
		{
			canvas.translate(0, getHeight());
			canvas.rotate(-90);
		}
		canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());
		getLayout().draw(canvas);
		canvas.restore();
	}
}
